package com.china.dao;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public interface BaseDaoI<T> {
	/**
	 * 保存一个对象
	 * @param t
	 * @return
	 */
	public Serializable save(T t);
	/**
	 * 删除一个对象
	 * @param t
	 */
	public void delete(T t);
	/**
	 * 更新一个对象
	 * @param t
	 */
	public void update(T t);
	/**
	 * 保存或者更新一个对象
	 * @param t
	 */
	public void saveOrUpdate(T t);
	/**
	 * 获取一个对象(ID)
	 * @param t
	 * @param id
	 * @return
	 */
	public T get(Class<T> t,Serializable id );
	/**
	 * 获取一个对象(带参数)
	 * @param hql
	 * @param params
	 * @return
	 */
	public T get(String hql,Map<String, Object> params);
	/**
	 * 查询集合
	 * @param hql
	 * @return
	 */
	public List<T> find(String hql);
	/**
	 * 查询集合(带参数)
	 * @param hql
	 * @param params
	 * @return
	 */
	public List<T> find(String hql,Map<String, Object> params);
	/**
	 * 查询集合(带分页)
	 * @param hql
	 * @param params
	 * @param page
	 * @param rows
	 * @return
	 */
	public List<T> find(String hql,Map<String, Object> params,Integer page,Integer rows);
	/**
	 * 查询集合的个数
	 * @param hql
	 * @return
	 */
	public Long count(String hql);
	/**
	 * 查询集合的个数(带参数)
	 * @param hql
	 * @param params
	 * @return
	 */
	public Long count(String hql,Map<String, Object> params);
	/**
	 * 执行hql语句
	 * @param hql
	 * @return
	 */
	public Integer executeHql(String hql);
	/**
	 * 执行hql语句(带参数)
	 * @param hql
	 * @param params
	 * @return
	 */
	public Integer executeHql(String hql,Map<String, Object> params);
	
}
